使用Qt创建一个时钟 您所在的位置:网站首页 AutoClock Qt实现 指针式时钟+数字时钟 使用Qt创建一个时钟

使用Qt创建一个时钟

2024-06-26 14:10| 来源: 网络整理| 查看: 265

如何用Qt制作时钟呢?下面一起来看一下吧:

首先来看一下成品图 我在网上找的好看的照片作为背景,用画板画表盘和各个指针,看起来效果挺不错。 主要代码 2.1、设置画家函数 2.2、背景部分 //添加背景图 QPixmap map(":/2.jpg"); //图片大小 QRect q(0,0,710,710); //图片自定义拉伸 QRect q2(0,0,width(),height()); painter.drawPixmap(q2,map,q); 首先要会添加资源

一直继续就行 先添加前缀再添加文件

2.3、声明定时器

Clock::Clock(QWidget *parent) : QWidget(parent), ui(new Ui::Clock) { ui->setupUi(this); //先声明一个定时器 QTimer*timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(update())); //连接电子时钟 connect(timer,SIGNAL(timeout()),this,SLOT(showTime())); timer->start(1000); //设置窗体名称和大小 setWindowTitle(tr("Clock")); resize(400,400); }

2.4、画布设置

//反走样功能,调用反锯齿功能,防止旋转时直线出现锯齿状 painter.setRenderHint(QPainter::Antialiasing); //重新定义坐标的原点:把坐标放在窗体中间 painter.translate(width()/2,height()/2); //调用drawText,增加文字“CLOCK” painter.drawText(side/-5,side/-4,side/4,side/3,Qt::AlignRight,tr("CLOCK")); //设定边界 painter.scale(side/250.0,side/250.0);

2.5、设置时钟部分

void Clock::paintEvent(QPaintEvent*) { //刻画时针、分针、秒针、长刻度、短刻度 static const QPoint hourHand[3]={ QPoint(7,14), QPoint(-7,14), QPoint(0,-50) }; static const QPoint minuteHand[3]={ QPoint(5,14), QPoint(-5,14), QPoint(0,-65) }; static const QPoint secondHand[3]={ QPoint(3,14), QPoint(-3,14), QPoint(0,-80) }; static const QPoint line_long[2]={ QPoint(0,100), QPoint(0,85) }; static const QPoint line_short[2]={ QPoint(0,100), QPoint(0,95) }; //绘制的范围 int side=qMin(width(),height()); //获取当前时间 QTime time=QTime::currentTime(); //声明用来绘图的painter QPainter painter(this);

绘画时钟

//使边线为黑色 painter.setPen(Qt::black); //画刷的颜色 painter.setBrush(Qt::black); //保存painter的状态 painter.save(); //设置painter的旋转角度 painter.rotate(30.0*((time.hour()+time.minute()/60.0))); //设置时针 //画出多边形,3表示3条边 painter.drawConvexPolygon(hourHand,3); //恢复当前画家状态 painter.restore(); painter.setPen(Qt::black); //时针的12个刻度 for(int i=0;i painter.drawText(-20,-82,40,40,Qt::AlignHCenter|Qt::AlignTop,QString::number(12)); } else painter.drawText(-20,-82,40,40,Qt::AlignHCenter|Qt::AlignTop,QString::number(i)); painter.rotate(30.0); } painter.setPen(Qt::black); painter.setBrush(Qt::black); //保存状态 painter.save(); //绘制分针转角 painter.rotate(6.0*(time.minute()+time.second()/60.0)); painter.drawConvexPolygon(minuteHand,3); painter.restore(); painter.setPen(Qt::black); //分针刻度 for(int j=0;j QTime time = QTime::currentTime(); QString txtTime=time.toString("hh:mm:ss"); ui->lcdNumber->display(txtTime); //ui->lcdNumber->move(side2/3,side2/2); }

3.最后是总代码 clock.h clock.cpp

#include "clock.h" #include "ui_clock.h" #include #include #include #include Clock::Clock(QWidget *parent) : QWidget(parent), ui(new Ui::Clock) { ui->setupUi(this); //先声明一个定时器 QTimer*timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(update())); //连接电子时钟 connect(timer,SIGNAL(timeout()),this,SLOT(showTime())); timer->start(1000); //设置窗体名称和大小 setWindowTitle(tr("Clock")); resize(400,400); } void Clock::setTime(QTime) { } void Clock::showTime() { QTime time = QTime::currentTime(); QString txtTime=time.toString("hh:mm:ss"); ui->lcdNumber->display(txtTime); //ui->lcdNumber->move(side2/3,side2/2); } Clock::~Clock() { delete ui; } void Clock::paintEvent(QPaintEvent*) { //刻画时针、分针、秒针、长刻度、短刻度 static const QPoint hourHand[3]={ QPoint(7,14), QPoint(-7,14), QPoint(0,-50) }; static const QPoint minuteHand[3]={ QPoint(5,14), QPoint(-5,14), QPoint(0,-65) }; static const QPoint secondHand[3]={ QPoint(3,14), QPoint(-3,14), QPoint(0,-80) }; static const QPoint line_long[2]={ QPoint(0,100), QPoint(0,85) }; static const QPoint line_short[2]={ QPoint(0,100), QPoint(0,95) }; //绘制的范围 int side=qMin(width(),height()); //获取当前时间 QTime time=QTime::currentTime(); //声明用来绘图的painter QPainter painter(this); //添加背景图 QPixmap map(":/2.jpg"); //图片大小 QRect q(0,0,710,710); //图片自定义拉伸 QRect q2(0,0,width(),height()); painter.drawPixmap(q2,map,q); //设定电子时钟的位置 ui->lcdNumber->move(width()/2.8,height()/1.7); //反走样功能,调用反锯齿功能,防止旋转时直线出现锯齿状 painter.setRenderHint(QPainter::Antialiasing); //重新定义坐标的原点:把坐标放在窗体中间 painter.translate(width()/2,height()/2); //调用drawText,增加文字“CLOCK” painter.drawText(side/-5,side/-4,side/4,side/3,Qt::AlignRight,tr("CLOCK")); //设定边界 painter.scale(side/250.0,side/250.0); //使边线为黑色 painter.setPen(Qt::black); //画刷的颜色 painter.setBrush(Qt::black); //保存painter的状态 painter.save(); //设置painter的旋转角度 painter.rotate(30.0*((time.hour()+time.minute()/60.0))); //设置时针 //画出多边形,3表示3条边 painter.drawConvexPolygon(hourHand,3); //恢复当前画家状态 painter.restore(); painter.setPen(Qt::black); //时针的12个刻度 for(int i=0;i painter.drawText(-20,-82,40,40,Qt::AlignHCenter|Qt::AlignTop,QString::number(12)); } else painter.drawText(-20,-82,40,40,Qt::AlignHCenter|Qt::AlignTop,QString::number(i)); painter.rotate(30.0); } painter.setPen(Qt::black); painter.setBrush(Qt::black); //保存状态 painter.save(); //绘制分针转角 painter.rotate(6.0*(time.minute()+time.second()/60.0)); painter.drawConvexPolygon(minuteHand,3); painter.restore(); painter.setPen(Qt::black); //分针刻度 for(int j=0;j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有